/* ============================================================
 * Sistemi Operativi, Corso di Laurea in Ingegneria Informatica
 * DIMES, Università della Calabria
 * ============================================================
 */
package unical.inginf.sisop.commons;

import java.util.Random;
import java.util.concurrent.TimeUnit;

/**
 * Classe contenente solo metodi statici, utili per la sospensione temporizzata
 * dei thread.
 * 
 * @author Marco Lackovic <mlackovic@deis.unical.it>
 * @version 1.0, Jan 9, 2013
 */
public class Sleep {

    /*
     * Costruttore privato lasciato intenzionalmente vuoto: utile solo per
     * prevenire l'istanziazione di oggetti di questo tipo
     */
    private Sleep() {
    }

    /**
     * Attende un tempo casuale compreso tra min e max (inclusi) di un'unità di
     * tempo specificata da t.
     * 
     * Esempio di utilizzo: Sleep.random(TimeUnit.SECONDS, 2, 4), sospenderà il
     * thread che l'ha invocato per un tempo compreso tra 2 e 4 secondi.
     * 
     * @param t
     * @param min
     * @param max
     * @throws InterruptedException
     */
    public static void random(TimeUnit t, int min, int max)
            throws InterruptedException {
        t.sleep(new Random().nextInt(max - min + 1) + min);
    }
}
